This can be helpful when debugging broadway.
BROADWAY_NODE_KEEP_ALL = 11,
BROADWAY_NODE_KEEP_THIS = 12,
BROADWAY_NODE_TRANSLATE = 13,
+ BROADWAY_NODE_DEBUG = 14,
} BroadwayNodeType;
static const char *broadway_node_type_names[] G_GNUC_UNUSED = {
"KEEP_ALL",
"KEEP_THIS",
"TRANSLATE",
+ "DEBUG",
};
typedef enum {
return stops;
}
+function utf8_to_string(array) {
+ var out, i, len, c;
+ var char2, char3;
+
+ out = "";
+ len = array.length;
+ i = 0;
+ while(i < len) {
+ c = array[i++];
+ switch(c >> 4)
+ {
+ case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
+ // 0xxxxxxx
+ out += String.fromCharCode(c);
+ break;
+ case 12: case 13:
+ // 110x xxxx 10xx xxxx
+ char2 = array[i++];
+ out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
+ break;
+ case 14:
+ // 1110 xxxx 10xx xxxx 10xx xxxx
+ char2 = array[i++];
+ char3 = array[i++];
+ out += String.fromCharCode(((c & 0x0F) << 12) |
+ ((char2 & 0x3F) << 6) |
+ ((char3 & 0x3F) << 0));
+ break;
+ }
+ }
+
+ return out;
+}
+
+SwapNodes.prototype.decode_string = function() {
+ var len = this.decode_uint32();
+ var utf8 = new Array();
+ var b;
+ for (var i = 0; i < len; i++) {
+ if (i % 4 == 0) {
+ b = this.decode_uint32();
+ }
+ utf8[i] = b & 0xff;
+ b = b >> 8;
+ }
+
+ return utf8_to_string (utf8);
+}
+
function args() {
var argsLength = arguments.length;
var strings = [];
}
break;
+ case 14: // DEBUG
+ {
+ var str = this.decode_string();
+ var div = document.createElement('div');
+ div.setAttribute('debug', str);
+ this.insertNode(div, -1, oldChildren[0]);
+ newNode = div;
+ }
+ break;
+
/* Generic nodes */
case 1: // CONTAINER
{
BroadwayNode *node;
guint32 type;
- guint32 i, n_stops, n_shadows;
+ guint32 i, n_stops, n_shadows, n_chars;
guint32 size, n_children;
gint32 texture_offset;
guint32 hash;
size = NODE_SIZE_FLOAT;
n_children = 1;
break;
+ case BROADWAY_NODE_DEBUG:
+ n_chars = data[*pos];
+ size = 1 + (n_chars + 3) / 4;
+ n_children = 1;
+ break;
default:
g_assert_not_reached ();
}
add_rgba (nodes, &stop->color);
}
+static void
+add_string (GArray *nodes, const char *str)
+{
+ guint32 len = strlen(str);
+ guint32 v, c;
+
+ add_uint32 (nodes, len);
+
+ v = 0;
+ c = 0;
+ while (*str != 0)
+ {
+ v |= (*str++) << 8*c++;
+ if (c == 4)
+ {
+ add_uint32 (nodes, v);
+ v = 0;
+ c = 0;
+ }
+ }
+
+ if (c != 0)
+ add_uint32 (nodes, v);
+}
+
static gboolean
float_is_int32 (float f)
{
}
return;
+ case GSK_DEBUG_NODE:
+ {
+ const char *message = gsk_debug_node_get_message (node);
+ add_uint32 (nodes, BROADWAY_NODE_DEBUG);
+ add_string (nodes, message);
+ gsk_broadway_renderer_add_node (renderer, nodes, node_textures,
+ gsk_debug_node_get_child (node), offset_x, offset_y);
+ }
+ return;
+
/* Generic nodes */
case GSK_CONTAINER_NODE:
}
return;
- case GSK_DEBUG_NODE:
- gsk_broadway_renderer_add_node (renderer, nodes, node_textures,
- gsk_debug_node_get_child (node), offset_x, offset_y);
- return;
-
case GSK_COLOR_MATRIX_NODE:
case GSK_TEXT_NODE:
case GSK_REPEATING_LINEAR_GRADIENT_NODE: